package com.zxl.designpattern.creator.factory.abstractpattern;

import com.zxl.designpattern.creator.factory.pojo.Laptop;
import com.zxl.designpattern.creator.factory.pojo.Phone;

/**
 * @author zxl
 * @version 1.0
 * @description 设计模式-创建型模式-抽象工厂方法
 *  当需要创建的对象是一系列相互关联或相互依赖的产品族时，如电器工厂中的电视机、洗衣机、空调等。
 *  系统中有多个产品族，但每次只使用其中的某一族产品。如有人只喜欢穿某一个品牌的衣服和鞋。
 *  系统中提供了产品的类库，且所有产品的接口相同，客户端不依赖产品实例的创建细节和内部结构。
 *  如：输入法换皮肤，一整套一起换。生成不同操作系统的程序。
 * **优点：**
 * 当一个产品族中的多个对象被设计成一起工作时，它能保证客户端始终只使用同一个产品族中的对象。
 *
 * **缺点：**
 * 当产品族中需要增加一个新的产品时，所有的工厂类都需要进行修改。
 * @date 2025/5/31 20:13
 */
public interface IAbstractFactory {

    /**
     * 创建手机
     * @return
     */
    Phone createPhone();

    /**
     * 创建笔记本
     * @return
     */
    Laptop createLaptop();
}
